//
// Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License").
// You may not use this file except in compliance with the License.
// A copy of the License is located at
//
// http://aws.amazon.com/apache2.0
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing
// permissions and limitations under the License.
//

#import <Foundation/Foundation.h>
#import "AWSCocoaLumberjack.h"
#import <AWSCore/AWSCore.h>

FOUNDATION_EXPORT NSString *const AWSTestUtilitySTSKey;
FOUNDATION_EXPORT NSString *const AWSTestUtilityCognitoIdentityServiceKey;

@interface AWSTestUtility : NSObject

+ (NSDictionary<NSString *, id> *) getTestConfigurationJSON;
+ (NSDictionary<NSString *, NSString *> *) getCredentialsFromTestConfiguration;
+ (NSDictionary<NSString *, id> *) getIntegrationTestConfigurationForPackageId:(NSString *)packageId;
+ (NSString *) getIntegrationTestConfigurationValueForPackageId:(NSString *)packageId configKey:(NSString *)configKey;
+ (AWSRegionType) getRegionFromTestConfiguration;
+ (NSString *) getAccountIdFromTestConfiguration;

+ (void) setupSessionCredentialsProvider;
+ (void) setupCognitoIdentityService;
+ (AWSServiceConfiguration *) getDefaultServiceConfiguration;
+ (AWSBasicSessionCredentialsProvider *) getDefaultCredentialsProvider;

+ (void) setupFakeCognitoCredentialsProvider;
+ (void) setupCognitoCredentialsProviderForDefaultRegion;
+ (void) setupCognitoCredentialsProviderForRegion:(AWSRegionType)region;

+ (BOOL) isCognitoSupportedInDefaultRegion;

+ (void) setMockDate:(NSDate *)aMockDate;
+ (void) setupSwizzling;
+ (void) revertSwizzling;
+ (NSString *) getIoTEndPoint:(NSString *) endpointName;

@end
